//https://leetcode.cn/problems/teemo-attacking/
package startFromZero.Test495提莫攻击;

public class Solution {
    //这里这个方法超时了
//    public int findPoisonedDuration(int[] timeSeries, int duration) {
//        /**
//         * 新建一个长度比timeSeries中的最后时刻大duration长度的数组用来表示中毒时间
//         * 中毒时间数组为poisonTime[]
//         * 将timeSeries里面的值作为下标,将poisonTime[]中的time,time+1,...time+duration-1的值置为1
//         * 最后遍历poisonTime[]数组中为1的值,可得总中毒时间
//         */
//        int[] poisonTime = new int[timeSeries[timeSeries.length-1] + duration];
//        for (int t : timeSeries) {
//            for (int i = 0; i < duration; i++) {
//                poisonTime[t + i] = 1;
//            }
//        }
//        int totalTime = 0;
//        for (int i : poisonTime) {
//            totalTime += i;
//        }
//        return totalTime;
//    }
    public int findPoisonedDuration(int[] timeSeries, int duration) {
        //直接遍历timeSeries数组,如果相邻两项的差值小于duration,那么中毒时间取后者减去前者 如果大于duration,
        //那么取duration 设置一个sum用于记录中毒时间总和
        int sum = duration;
        //这个下面的逻辑可以优化 仔细看就能发现这个if/else取的其实是两者最小值 用min即可
        for (int i = 0; i < timeSeries.length - 1; i++) {
            if ((timeSeries[i + 1] - timeSeries[i] + 1) > duration) {
                sum += duration;
            } else {
                sum+=(timeSeries[i + 1] - timeSeries[i]);
            }
        }
        return sum;
    }
}
